package com.gxa.modules.app.login.controller;

import java.io.PrintWriter;
 
import java.util.Enumeration;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.gxa.modules.app.login.common.Result;
import com.gxa.modules.app.login.entity.WXAuth;
import com.gxa.modules.app.login.service.IWeixinService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * 前端调用 wx.login请求到微信  获取code code 再从后端 获取sessionId 此时 后台发请求到微信   获取 opeid 和sessionKey 安全起见后台保存
 * <p>前端调用wx.getUserProfile请求到微信  获取 到  encryptedData,  vi 加上我们返给前端的,  sessionId --换取opeid 和sessionKey
 * 后端解密 返回用户数据
 *  前端控制器
 * </p>
 */
@RequestMapping("/weixin")
@Controller
@Slf4j
@Api(tags = "微信登录")

@RestController
public class WeixinController {

	@Autowired
	private IWeixinService weixinService;

	/**
	 * 前端将请求微信拿到的code 来我这换取 sessionId 下一个方法用到
	 * @param code
	 * @return
	 */
	@ApiOperation("第一步：用code 换取 sessioId")
	@GetMapping("/sessionId/{code}")
	public String getSessionId(@PathVariable("code") String code){
		log.info("WeixinController--------getSessionId"+code);
		return  weixinService.getSessionId(code);
	}

	/**
	 * 授权登录
	 * @param wxAuth
	 * @return
	 */
	@ApiOperation("第二步：获取用户信息")
	@PostMapping("/authLogin")
	public Result authLogin(@RequestBody WXAuth wxAuth) {

		log.info("请求进来了 WeixinController---authLogin{}",wxAuth);
		Result result = weixinService.authLogin(wxAuth);
		log.info("{}",result);
		return result;
	}
}